home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-02 / prodpack.zip / DB4PPSRC.EXE / COMPIT.PRG < prev    next >
Text File  |  1993-05-11  |  5KB  |  218 lines

  1. PROCEDURE CompIt
  2. PARAMETERS pcPara1, pcPara2, pcPara3
  3. *----------------------------------------------------------------------------
  4. * NAME
  5. *   CompIt - Compile .PRG files with a Make utility
  6. *
  7. * DESCRIPTION
  8. *
  9. * PARAMETERS
  10. *   pcPara1  =
  11. *   pcPara2  =
  12. *   pcPara3  =
  13. *
  14. * DEPENDENCIES
  15. *   Uses: _WhatPara(), _FileRoot()
  16. *
  17. *----------------------------------------------------------------------------
  18.   SET SAFETY OFF
  19.   SET TALK OFF
  20.   SET STATUS OFF
  21.   SET FULLPATH ON
  22.   SET EXACT ON
  23.   SET PATH TO \test\ccppdbb\dbos, \test\ccppdbb\prgs, \test\ccppprgs\dbos, \test\ccppprgs\prgs 
  24.  
  25.   IF LEFT( OS(), 3 ) = "DOS"
  26.     lc_slash = "\"
  27.   ELSE
  28.     lc_slash = "/"
  29.   ENDIF
  30.  
  31.   cDboDir = ""
  32.   cPrgDir = ""
  33.   cPrg2Comp = ""
  34.   cCurDir = SET( "DIRECTORY" )
  35.  
  36.   *-- Scan arguments
  37.   nArgs = PCOUNT()
  38.   n = 1
  39.   DO WHILE n <= nArgs .AND. n <= 3
  40.     cnVar = STR( n, 1 )
  41.     cArg = UPPER( pcPara&cnVar. )
  42.     DO CASE
  43.       CASE LEFT( cArg, 2 ) = "-D"       && DBO Directory
  44.         nComma = AT( ",", cArg )
  45.         IF nComma > 0
  46.           cDboDir = LTRIM( TRIM( SUBSTR( cArg, nComma + 1 ) ) )
  47.         ELSE
  48.           cDboDir = LTRIM( TRIM( SUBSTR( cArg, 3 ) ) )
  49.         ENDIF
  50.  
  51.         IF RIGHT( cDboDir, 1 ) <> lc_Slash
  52.           cDboDir = cDboDir + lc_Slash
  53.         ENDIF
  54.  
  55.       CASE LEFT( cArg, 2 ) = "-P"       && PRG Directory
  56.         nComma = AT( ",", cArg )
  57.         IF nComma > 0
  58.           cPrgDir = LTRIM( TRIM( SUBSTR( cArg, nComma + 1 ) ) )
  59.         ELSE
  60.           cPrgDir = LTRIM( TRIM( SUBSTR( cArg, 3 ) ) )
  61.         ENDIF
  62.  
  63.         IF RIGHT( cPrgDir, 1 ) <> lc_Slash
  64.           cPrgDir = cPrgDir + lc_Slash
  65.         ENDIF
  66.  
  67.       OTHERWISE                         && File list of PRGs
  68.         cPrg2Comp = LTRIM( TRIM( cArg ) )
  69.     ENDCASE
  70.     n = n + 1
  71.   ENDDO
  72.  
  73.   *------------------------------------------------
  74.   *-- Make sure the list of files to compile exists
  75.   *------------------------------------------------
  76.   IF ISBLANK( cPrg2Comp )
  77.     cMsg = [No files to compile. Quitting with no error.]
  78.     ? cMsg
  79.     ! ECHO &cMsg.
  80.     QUIT WITH 0
  81.   ENDIF
  82.  
  83.   *-------------------------
  84.   *-- Validate DBO Directory
  85.   *-------------------------
  86.   IF .NOT. ISBLANK( cDboDir )
  87.     fhCheckIt = 0
  88.     fhCheckIt = FCREATE( cDboDir + "CHECHIT.OUT" )
  89.     IF fhCheckIt > 0
  90.       IF FCLOSE( fhCheckIt )
  91.         cFullPath = LEFT( cDboDir, LEN( cDboDir ) - 1 )
  92.         SET DIRECTORY TO &cFullPath
  93.         ERASE CHECHIT.OUT
  94.         cDboDir = SET( "DIRECTORY" )
  95.         SET DIRECTORY TO &cCurDir
  96.       ENDIF
  97.     ELSE
  98.       cMsg = [DBO Directory does not exist:] + cDboDir
  99.       ? cMsg
  100.       ! ECHO &cMsg.
  101.       QUIT WITH 1
  102.     ENDIF
  103.   ELSE
  104.     cDboDir = SET( "DIRECTORY" )
  105.   ENDIF
  106.  
  107.   *-------------------------
  108.   *-- Validate PRG Directory
  109.   *-------------------------
  110.   IF .NOT. ISBLANK( cPrgDir )
  111.     fhCheckIt = 0
  112.     fhCheckIt = FCREATE( cPrgDir + "CHECHIT.OUT" )
  113.     IF fhCheckIt > 0
  114.       IF FCLOSE( fhCheckIt )
  115.         cFullPath = LEFT( cPrgDir, LEN( cPrgDir ) - 1 )
  116.         SET DIRECTORY TO &cFullPath
  117.         ERASE CHECHIT.OUT
  118.         cPrgDir = SET( "DIRECTORY" )
  119.         SET DIRECTORY TO &cCurDir
  120.       ENDIF
  121.     ELSE
  122.       cMsg = [PRG Directory does not exist:] + cPrgDir
  123.       ? cMsg
  124.       ! ECHO &cMsg.
  125.       QUIT WITH 1
  126.     ENDIF
  127.   ELSE
  128.     cPrgDir = SET( "DIRECTORY" )
  129.   ENDIF
  130.  
  131.   *----------------------------------------------
  132.   *-- Loop through the file list and compile them
  133.   *----------------------------------------------
  134.   lAllOk = .T.
  135.   cQCode = 0
  136.   nFiles = _WhatPara( "aFiles", cPrg2Comp )
  137.   n = 1
  138.   DO WHILE n <= nFiles
  139.  
  140.     *-----------------------------------------------------------
  141.     *-- Add the PRG path as needed and make sure the file exists
  142.     *-----------------------------------------------------------
  143.     IF .NOT. ISBLANK( cPrgDir )
  144.       IF .NOT. (":" $ aFiles[ n ] .OR. lc_Slash $ aFiles[ n ] )
  145.         aFiles[ n ] = cPrgDir + lc_Slash + aFiles[ n ]
  146.       ENDIF
  147.     ENDIF
  148.     IF .NOT. ( "." $ aFiles[ n ] )
  149.       aFiles[ n ] = aFiles[ n ] + ".PRG"
  150.     ENDIF
  151.  
  152.     IF .NOT. FILE( aFiles[ n ] )
  153.       lAllOk = .F.
  154.       cMsg = [PRG does not exist:] + aFiles[ n ]
  155.       ? cMsg
  156.       ! ECHO &cMsg.
  157.  
  158.     ELSE
  159.       lCompileOk = .T.
  160.       cPrg = _FileRoot( aFiles[ n ] )
  161.  
  162.       ? "Compiling:", aFiles[ n ] + SPACE( 40 )
  163.       ?
  164.  
  165.       cErrFile = cPrg + ".err"
  166.  
  167.       ERASE (cErrFile )
  168.       SET ALTERNATE TO (cErrFile )
  169.       SET ALTERNATE ON
  170.       SET TALK ON
  171.       SET CONSOLE ON
  172.       ON ERROR lCompileOk = .F.
  173.  
  174.       COMPILE ( aFiles[ n ] )
  175.  
  176.       ON ERROR
  177.  
  178.       SET ALTERNATE OFF
  179.       SET ALTERNATE TO
  180.       SET TALK OFF
  181.       SET CONSOLE OFF
  182.  
  183.       IF .NOT. lCompileOk
  184.         SAVE SCREEN TO CompIt
  185.         ! TYPE &cErrFile.
  186.         RESTORE SCREEN FROM CompIt
  187.         RELEASE SCREEN CompIt
  188.         lAllOk = .F.
  189.       ELSE
  190.         *-----------------------------------------
  191.         *-- Copy the dbo file to the dbo directory
  192.         *-----------------------------------------
  193.         IF cDboDir <> cPrgDir
  194.           cFullPre = aFiles[ n ]
  195.           DO _FullPre WITH cFullPre
  196.           cFullPre = cFullPre + ".DBO"
  197.           ! COPY &cFullPre. &cDboDir.
  198.           ERASE ( cFullPre )
  199.         ENDIF
  200.  
  201.       ENDIF
  202.  
  203.       ERASE ( cErrFile )
  204.     ENDIF
  205.  
  206.     n = n + 1
  207.   ENDDO
  208.  
  209.   IF .NOT. lAllOk
  210.     cQCode = 1
  211.   ENDIF
  212.  
  213. QUIT WITH cQCode
  214. *-- EOP: CompIt WITH pcPrg
  215.  
  216.  
  217.  
  218.